
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pro.Servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import pro.Servlet.*;
import pro.dao.*;
import pro.bean.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Cyndi
 */
@WebServlet(name = "detalleProyecto", urlPatterns = {"/detalleProyecto"})
public class detalleProyecto extends HttpServlet {

    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        HttpSession sesion = request.getSession(true);
        try {
            String accionStr = (request.getParameter("accion") == null ? "3" : request.getParameter("accion"));
            int accion = Integer.parseInt(accionStr);
            Proyecto proyecto = null;
            ProyectoDAO proyectoDAO = new ProyectoDAO();
            ArrayList<Proyecto> listaProyectos = null;
            UsuarioDAO usuarioDAO = new UsuarioDAO();
            usuario user = null;
            int idProye = 0;
            int idUser;
            String pagina = "";
            switch (accion) {
                case 1: //NUEVO
                    proyecto = new Proyecto();
                    request.setAttribute("listaUsuario", usuarioDAO.listarUsuarios("", 0)); 
                    request.setAttribute("proyecto", proyecto);
                    pagina = "/pages/biblio/proyecto.jsp";
                    
                    break;
                case 2: //MODIFICAR, esta a medias
                    int idProyecto = Integer.parseInt(request.getParameter("idProyecto")); 
                    proyecto = proyectoDAO.obtenerProyecto(idProyecto);
                    request.setAttribute("listaUsuario", usuarioDAO.listarUsuarios("", idProyecto)); 
                    request.setAttribute("proyecto", proyecto);
                    pagina = "/pages/biblio/proyecto.jsp"; 
                    break;
                case 3: //GUARDAR O ACTUALIZAR
                    proyecto = new Proyecto();
                    proyecto.setIdProyecto(Integer.parseInt(request.getParameter("txtCodigo")));
                    proyecto.setNombre(request.getParameter("txtNombre"));
                    proyecto.setLocal(request.getParameter("txtLocal"));
                    proyecto.setDesc(request.getParameter("txtDescripcion"));
                    proyecto.getEstado().setIdEstado(Integer.parseInt(request.getParameter("ddlEstado")));//debe ser un combobox con las opciones de estado
                    if (proyecto.getIdProyecto().intValue() == 0) {
                         
                        proyectoDAO.registrarProyecto(proyecto);
                        Integer idP = Integer.parseInt(request.getParameter("idProy"));
                        Integer idU = Integer.parseInt(request.getParameter("idUs"));
                        proyectoDAO.ingresarUsuario(idP, idU, 1);
                          
                    } else {
                        //proyectoDAO.actualizarProyecto(proyecto); falta implementar
                    }
                    pagina = "/listaProyectos";//regresa a la lista de proyectos
                    break;
                case 4: //ELIMINAR, falta implementar
                    //int idProyectox=Integer.parseInt(request.getParameter("idProyecto"));
                    //proyectoDAO.borrarProyecto(idProyectox);
                    //pagina="/listaLibros";
                    break;
                case 5: //AGREGAR USUARIO A PROYECTO

                    Integer idProy = Integer.parseInt(request.getParameter("idProyecto"));
                    Integer idUsuario = Integer.parseInt(request.getParameter("idUsuario"));
                    Integer idRol = Integer.parseInt(request.getParameter("idRol"));
                    proyectoDAO.ingresarUsuario(idProy, idUsuario, idRol);
                    proyecto = new Proyecto();
                                    
                    proyecto.setIdProyecto(Integer.parseInt(request.getParameter("idProyecto")));
                    request.setAttribute("proyecto", proyecto);
                    
                    listaProyectos = proyectoDAO.proyectosXUsuario(idUsuario);
                    request.setAttribute("listaProyecto", listaProyectos);
                    
                    pagina = "/listaUsuarios"; 
                    break;

                case 6: //CARGAR PROYECTO
                    HttpSession session = request.getSession(false);
                    idUser = (Integer)(session.getAttribute("idusuario"));
                    //int idUser = (id == null)? 0 : Integer.parseInt(id);
                    //idProye = ;
                    Integer idProyectoActivo = Integer.parseInt(request.getParameter("idProyecto"));
                    proyecto = proyectoDAO.obtenerProyecto(idProyectoActivo);
                    request.setAttribute("Proyecto", proyecto);
                    //request.setAttribute("idProyecto", idProye);
                    listaProyectos = proyectoDAO.proyectosXUsuario(idUser);
                    request.setAttribute("ListaProyectos", listaProyectos);
                    String rolProyecto = proyectoDAO.buscarRol(idProyectoActivo, idUser);
                    request.setAttribute("rolProyecto", rolProyecto);
                    pagina = "/PaginasUsuario/cargaProyecto.jsp";
                    
                                      
                    
                                        
                    break;
                case 7: //AGREGAR USUARIOS A UN PROYECTO
                    proyecto = new Proyecto();
                    idProye = Integer.parseInt(request.getParameter("idProye"));
                    proyecto = proyectoDAO.obtenerProyecto(idProye);
                    request.setAttribute("proyecto", proyecto);
                    request.setAttribute("idProye", idProye);
                    idUser = (Integer) (sesion.getAttribute("idusuario"));
                    listaProyectos = proyectoDAO.proyectosXUsuarioXRol(idUser,"Administrador");
                    request.setAttribute("listaProyecto", listaProyectos);
                    pagina = "/listaUsuarios";
                    break;

                default:
                    new UnsupportedOperationException("Operacion no definida");
            }
            RequestDispatcher rd = getServletContext().getRequestDispatcher(pagina);
            rd.forward(request, response);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
